1 from tkinter import *
2 import random

3
4 class
Bill_App:
5     def __init__(self,root):
6         self.root = root
7         self.root.geometry(
"1300x700+0+0")
8         self.root.maxsize(width =
1280,height = 700)
9         self.root.minsize(width =
1280,height = 700)
10         self.root.title(
"Grocery Billing System")
11         
12         #====================Variables========================#
13         self.cus_name = StringVar()
14         self.c_phone = StringVar()
15         #For Generating Random Bill Numbers
16         x = random.randint(
1000,9999)
17         self.c_bill_no = StringVar()
18         #Seting Value to variable
19         self.c_bill_no.
set(str(x))
20
21         self.bread = IntVar()
22         self.candy = IntVar()
23         self.hamburger = IntVar()
24         self.hotdog = IntVar()
25         self.sandwich = IntVar()
26         self.rice = IntVar()
27         self.salt = IntVar()
28         self.food_oil = IntVar()
29         self.wheat = IntVar()
30         self.sugar = IntVar()
31         self.gatorade = IntVar()
32         self.coke = IntVar()
33         self.juice = IntVar()
34         self.waffer = IntVar()
35         self.biscuits = IntVar()
36         self.total_food = StringVar()
37         self.total_grocery = StringVar()
38         self.total_other = StringVar()
39         self.tax_cos = StringVar()
40         self.tax_groc = StringVar()
41         self.tax_other = StringVar()
42
43
44         #===================================
45         bg_color =
"green"
46         fg_color =
"white"
47         lbl_color =
'white'
48         #Title of App
49         title = Label(self.root,text =
"Grocery Billing System",bd = 12,relief = GROOVE,fg = fg_color,bg = bg_color,font=("times new roman",30,"bold"),pady = 3).pack(fill = X)
50
51         #==========Customers Frame==========#
52         F1 = LabelFrame(text =
"Customer Details",font = ("time new roman",12,"bold"),fg = "gold",bg = bg_color,relief = GROOVE,bd = 10)
53         F1.place(x =
0,y = 80,relwidth = 1)
54
55         #===============Customer Name===========#
56         cname_lbl = Label(F1,text=
"Customer Name",bg = bg_color,fg = fg_color,font=("times new roman",15,"bold")).grid(row = 0,column = 0,padx = 10,pady = 5)
57         cname_en = Entry(F1,bd =
8,relief = GROOVE,textvariable = self.cus_name)
58         cname_en.grid(row =
0,column = 1,ipady = 4,ipadx = 30,pady = 5)
59
60         #=================Customer Phone==============#
61         cphon_lbl = Label(F1,text =
"Phone No",bg = bg_color,fg = fg_color,font = ("times new roman",15,"bold")).grid(row = 0,column = 2,padx = 20)
62         cphon_en = Entry(F1,bd =
8,relief = GROOVE,textvariable = self.c_phone)
63         cphon_en.grid(row =
0,column = 3,ipady = 4,ipadx = 30,pady = 5)
64
65         #====================Customer Bill No==================#
66         cbill_lbl = Label(F1,text =
"Bill No.",bg = bg_color,fg = fg_color,font = ("times new roman",15,"bold"))
67         cbill_lbl.grid(row =
0,column = 4,padx = 20)
68         cbill_en = Entry(F1,bd =
8,relief = GROOVE,textvariable = self.c_bill_no)
69         cbill_en.grid(row =
0,column = 5,ipadx = 30,ipady = 4,pady = 5)
70         
71         #==================Food Frame=====================#
72         F2 = LabelFrame(self.root,text =
'Food',bd = 10,relief = GROOVE,bg = bg_color,fg = "gold",font = ("times new roman",13,"bold"))
73         F2.place(x =
5,y = 180,width = 325,height = 380)
74
75         #===========Frame Content
76         bath_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Bread")
77         bath_lbl.grid(row =
0,column = 0,padx = 10,pady = 20)
78         bath_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.bread)
79         bath_en.grid(row =
0,column = 1,ipady = 5,ipadx = 5)
80
81         #=======Candy
82         face_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Candy")
83         face_lbl.grid(row =
1,column = 0,padx = 10,pady = 20)
84         face_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.candy)
85         face_en.grid(row =
1,column = 1,ipady = 5,ipadx = 5)
86
87         #========Hamburger
88         wash_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Hamburger")
89         wash_lbl.grid(row =
2,column = 0,padx = 10,pady = 20)
90         wash_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.hamburger)
91         wash_en.grid(row =
2,column = 1,ipady = 5,ipadx = 5)
92
93         #========Hotdog
94         hair_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Hotdog")
95         hair_lbl.grid(row =
3,column = 0,padx = 10,pady = 20)
96         hair_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.hotdog)
97         hair_en.grid(row =
3,column = 1,ipady = 5,ipadx = 5)
98
99         #============Sandwich
100         lot_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Sandwich")
101         lot_lbl.grid(row =
4,column = 0,padx = 10,pady = 20)
102         lot_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.sandwich)
103         lot_en.grid(row =
4,column = 1,ipady = 5,ipadx = 5)
104
105         #==================Grocery Frame=====================#
106         F2 = LabelFrame(self.root,text =
'Grocery',bd = 10,relief = GROOVE,bg = bg_color,fg = "gold",font = ("times new roman",13,"bold"))
107         F2.place(x =
330,y = 180,width = 325,height = 380)
108
109         #===========Frame Content
110         rice_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Rice")
111         rice_lbl.grid(row =
0,column = 0,padx = 10,pady = 20)
112         rice_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.rice)
113         rice_en.grid(row =
0,column = 1,ipady = 5,ipadx = 5)
114
115         #=======
116         oil_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Food Oil")
117         oil_lbl.grid(row =
1,column = 0,padx = 10,pady = 20)
118         oil_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.food_oil)
119         oil_en.grid(row =
1,column = 1,ipady = 5,ipadx = 5)
120
121         #=======
122         daal_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Salt")
123         daal_lbl.grid(row =
2,column = 0,padx = 10,pady = 20)
124         daal_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.salt)
125         daal_en.grid(row =
2,column = 1,ipady = 5,ipadx = 5)
126
127         #========
128         wheat_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Wheat")
129         wheat_lbl.grid(row =
3,column = 0,padx = 10,pady = 20)
130         wheat_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.wheat)
131         wheat_en.grid(row =
3,column = 1,ipady = 5,ipadx = 5)
132
133         #============
134         sugar_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Sugar")
135         sugar_lbl.grid(row =
4,column = 0,padx = 10,pady = 20)
136         sugar_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.sugar)
137         sugar_en.grid(row =
4,column = 1,ipady = 5,ipadx = 5)
138
139         #==================Other Stuff=====================#
140
141         F2 = LabelFrame(self.root,text =
'Others',bd = 10,relief = GROOVE,bg = bg_color,fg = "gold",font = ("times new roman",13,"bold"))
142         F2.place(x =
655,y = 180,width = 325,height = 380)
143
144         #===========Frame Content
145         maza_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Gatorade")
146         maza_lbl.grid(row =
0,column = 0,padx = 10,pady = 20)
147         maza_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.gatorade)
148         maza_en.grid(row =
0,column = 1,ipady = 5,ipadx = 5)
149
150         #=======
151         cock_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Coke")
152         cock_lbl.grid(row =
1,column = 0,padx = 10,pady = 20)
153         cock_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.coke)
154         cock_en.grid(row =
1,column = 1,ipady = 5,ipadx = 5)
155
156         #=======
157         frooti_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Juice")
158         frooti_lbl.grid(row =
2,column = 0,padx = 10,pady = 20)
159         frooti_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.juice)
160         frooti_en.grid(row =
2,column = 1,ipady = 5,ipadx = 5)
161
162         #========
163         cold_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Waffer")
164         cold_lbl.grid(row =
3,column = 0,padx = 10,pady = 20)
165         cold_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.waffer)
166         cold_en.grid(row =
3,column = 1,ipady = 5,ipadx = 5)
167
168         #============
169         bis_lbl = Label(F2,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Biscuits")
170         bis_lbl.grid(row =
4,column = 0,padx = 10,pady = 20)
171         bis_en = Entry(F2,bd =
8,relief = GROOVE,textvariable = self.biscuits)
172         bis_en.grid(row =
4,column = 1,ipady = 5,ipadx = 5)
173
174         #===================Bill Aera================#
175         F3 = Label(self.root,bd =
10,relief = GROOVE)
176         F3.place(x =
960,y = 180,width = 325,height = 380)
177         #===========
178         bill_title = Label(F3,text =
"Bill List",font = ("Lucida",13,"bold"),bd= 7,relief = GROOVE)
179         bill_title.pack(fill = X)
180
181         #============
182         scroll_y = Scrollbar(F3,orient = VERTICAL)
183         self.txt = Text(F3,yscrollcommand = scroll_y.
set)
184         scroll_y.pack(side = RIGHT,fill = Y)
185         scroll_y.config(command = self.txt.yview)
186         self.txt.pack(fill = BOTH,expand =
1)
187
188         #===========Buttons Frame=============#
189         F4 = LabelFrame(self.root,text =
'Bill Menu',bd = 10,relief = GROOVE,bg = bg_color,fg = "gold",font = ("times new roman",13,"bold"))
190         F4.place(x =
0,y = 560,relwidth = 1,height = 145)
191
192         #===================
193         cosm_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Total Food")
194         cosm_lbl.grid(row =
0,column = 0,padx = 10,pady = 0)
195         cosm_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.total_food)
196         cosm_en.grid(row =
0,column = 1,ipady = 2,ipadx = 5)
197
198         #===================
199         gro_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Total Grocery")
200         gro_lbl.grid(row =
1,column = 0,padx = 10,pady = 5)
201         gro_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.total_grocery)
202         gro_en.grid(row =
1,column = 1,ipady = 2,ipadx = 5)
203
204         #================
205         oth_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Others Total")
206         oth_lbl.grid(row =
2,column = 0,padx = 10,pady = 5)
207         oth_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.total_other)
208         oth_en.grid(row =
2,column = 1,ipady = 2,ipadx = 5)
209
210         #================
211         cosmt_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Food Tax")
212         cosmt_lbl.grid(row =
0,column = 2,padx = 30,pady = 0)
213         cosmt_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.tax_cos)
214         cosmt_en.grid(row =
0,column = 3,ipady = 2,ipadx = 5)
215
216         #=================
217         grot_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Grocery Tax")
218         grot_lbl.grid(row =
1,column = 2,padx = 30,pady = 5)
219         grot_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.tax_groc)
220         grot_en.grid(row =
1,column = 3,ipady = 2,ipadx = 5)
221
222         #==================
223         otht_lbl = Label(F4,font = (
"times new roman",15,"bold"),fg = lbl_color,bg = bg_color,text = "Others Tax")
224         otht_lbl.grid(row =
2,column = 2,padx = 10,pady = 5)
225         otht_en = Entry(F4,bd =
8,relief = GROOVE,textvariable = self.tax_other)
226         otht_en.grid(row =
2,column = 3,ipady = 2,ipadx = 5)
227
228         #====================
229         total_btn = Button(F4,text =
"Total",bg = bg_color,fg = fg_color,font=("lucida",12,"bold"),bd = 7,relief = GROOVE,command = self.total)
230         total_btn.grid(row =
1,column = 4,ipadx = 20,padx = 30)
231
232         #========================
233         genbill_btn = Button(F4,text =
"Generate Bill",bg = bg_color,fg = fg_color,font=("lucida",12,"bold"),bd = 7,relief = GROOVE,command = self.bill_area)
234         genbill_btn.grid(row =
1,column = 5,ipadx = 20)
235
236         #====================
237         clear_btn = Button(F4,text =
"Clear",bg = bg_color,fg = fg_color,font=("lucida",12,"bold"),bd = 7,relief = GROOVE,command = self.clear)
238         clear_btn.grid(row =
1,column = 6,ipadx = 20,padx = 30)
239
240         #======================
241         exit_btn = Button(F4,text =
"Exit",bg = bg_color,fg = fg_color,font=("lucida",12,"bold"),bd = 7,relief = GROOVE,command = self.exit)
242         exit_btn.grid(row =
1,column = 7,ipadx = 20)
243
244 #Function to
get total prices
245     def total(self):
246         #=================Total Food Prices
247         self.total_food_prices = (
248             (self.bread.
get() * 1)+
249             (self.candy.
get() * 3)+
250             (self.hamburger.
get() * 8)+
251             (self.hotdog.
get() * 6)+
252             (self.sandwich.
get() * 4)
253         )
254         self.total_food.
set("$"+str(self.total_food_prices))
255         self.tax_cos.
set("$"+str(round(self.total_food_prices*0.05)))
256         #====================Total Grocery Prices
257         self.total_grocery_prices = (
258             (self.wheat.
get()*1)+
259             (self.food_oil.
get() * 5)+
260             (self.salt.
get() * 1)+
261             (self.rice.
get() *3)+
262             (self.sugar.
get() * 2)
263
264         )
265         self.total_grocery.
set("$"+str(self.total_grocery_prices))
266         self.tax_groc.
set("$"+str(round(self.total_grocery_prices*0.05)))
267         #======================Total Other Prices
268         self.total_other_prices = (
269             (self.gatorade.
get() * 4)+
270             (self.juice.
get() * 2)+
271             (self.coke.
get() * 2)+
272             (self.waffer.
get() * 2)+
273             (self.biscuits.
get() * 2)
274         )
275         self.total_other.
set("$"+str(self.total_other_prices))
276         self.tax_other.
set("$"+str(round(self.total_other_prices*0.05)))
277
278
279 #Function For Text Area
280     def welcome_soft(self):
281         self.txt.delete(
'1.0',END)
282         self.txt.insert(END,
" Welcome To Store's Retail\n")
283         self.txt.insert(END,f
"\nBill No. : {str(self.c_bill_no.get())}")
284         self.txt.insert(END,f
"\nCustomer Name : {str(self.cus_name.get())}")
285         self.txt.insert(END,f
"\nPhone No. : {str(self.c_phone.get())}")
286         self.txt.insert(END,
"\n===================================")
287         self.txt.insert(END,
"\nProduct Qty Price")
288         self.txt.insert(END,
"\n===================================")
289
290 #Function to clear the bill area
291     def clear(self):
292         self.txt.delete(
'1.0',END)
293
294 #Add Product name , qty and price to bill area
295     def bill_area(self):
296         self.welcome_soft()
297         
if self.bread.get() != 0:
298             self.txt.insert(END,f
"\nBread {self.bread.get()} {self.bread.get() * 1}")
299         
if self.candy.get() != 0:
300             self.txt.insert(END,f
"\nCandy {self.candy.get()} {self.candy.get() * 3}")
301         
if self.hamburger.get() != 0:
302             self.txt.insert(END,f
"\nHamburger {self.hamburger.get()} {self.hamburger.get() * 8}")
303         
if self.hotdog.get() != 0:
304             self.txt.insert(END,f
"\nHotdog {self.hotdog.get()} {self.hotdog.get() * 6}")
305         
if self.sandwich.get() != 0 :
306             self.txt.insert(END,f
"\nSandwich {self.sandwich.get()} {self.sandwich.get() * 4}")
307         
if self.wheat.get() != 0:
308             self.txt.insert(END,f
"\nWheat {self.wheat.get()} {self.wheat.get() * 1}")
309         
if self.food_oil.get() != 0:
310             self.txt.insert(END,f
"\nFood Oil {self.food_oil.get()} {self.food_oil.get() * 5}")
311         
if self.salt.get() != 0:
312             self.txt.insert(END,f
"\nSalt {self.salt.get()} {self.salt.get() * 1}")
313         
if self.rice.get() != 0:
314             self.txt.insert(END,f
"\nRice {self.rice.get()} {self.rice.get() * 3}")
315         
if self.sugar.get() != 0:
316             self.txt.insert(END,f
"\nSugar {self.sugar.get()} {self.sugar.get() * 2}")
317         
if self.gatorade.get() != 0:
318             self.txt.insert(END,f
"\nGatorade {self.gatorade.get()} {self.gatorade.get() * 4}")
319         
if self.juice.get() != 0:
320             self.txt.insert(END,f
"\nJuice {self.juice.get()} {self.juice.get() * 2}")
321         
if self.coke.get() != 0:
322             self.txt.insert(END,f
"\nCoke {self.coke.get()} {self.coke.get() * 2}")
323         
if self.waffer.get() != 0:
324             self.txt.insert(END,f
"\nWaffer {self.waffer.get()} {self.waffer.get() * 2}")
325         
if self.biscuits.get() != 0:
326             self.txt.insert(END,f
"\nBiscuits {self.biscuits.get()} {self.biscuits.get() * 2}")
327         self.txt.insert(END,
"\n===================================")
328         self.txt.insert(END,f
"\n Total : ${self.total_food_prices+self.total_grocery_prices+self.total_other_prices+self.total_food_prices * 0.05+self.total_grocery_prices * 0.05+self.total_other_prices * 0.05}")
329
330
331     def exit(self):
332         self.root.destroy()
333
334
335
336         
337
338
339 root = Tk()

340 object
= Bill_App(root)
341 root.mainloop()


Gõ tìm kiếm nhanh...